springboot基于@Bean注解注入多个数据源 |
您所在的位置:网站首页 › bean bean mouse › springboot基于@Bean注解注入多个数据源 |
这里只是简单的去实现一个项目中可能会引入多个数据源的情况,这里只是简单的去实现多个数据源的情况 我这里使用的是druid的数据源,需要引入依赖 com.github.drtrang druid-spring-boot2-starter 1.1.10配置文件:jdbc.properties #这里面两个数据库连接随便写的,只是为了实现多个数据源 #数据库1 dev.driverClassName=111111111 dev.url=111111111 dev.username=111111111 dev.password=111111111 #数据库2 uat.driverClassName=222222222 uat.url=222222222 uat.username=222222222 uat.password=222222222 接下来就是两个配置数据源,基于@Bean注解放入ioc容器中,需要注意的是:设置的第一个数据源的bean的name属性值必须为dataSource,否则就会报错 第一个配置数据源的代码:JdbcConfiguration01.java package com.shenlong.demo.config; import com.alibaba.druid.pool.DruidDataSource; import com.shenlong.demo.pojo.TestDemo; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; import javax.sql.DataSource; @Configuration @PropertySource("classpath:jdbc.properties") public class JdbcConfiguration01 { @Value("${dev.driverClassName}") private String driverClassName; @Value("${dev.url}") private String url; @Value("${dev.username}") private String username; @Value("${dev.password}") private String password; @Bean(name = "dataSource")//注意这里必须有个为dataSource public DataSource getDataSource(){ DruidDataSource druidDataSource = new DruidDataSource(); druidDataSource.setDriverClassName(driverClassName); druidDataSource.setUrl(url); druidDataSource.setUsername(username); druidDataSource.setPassword(password); return druidDataSource; } @Override public String toString() { return "JdbcConfiguration01{" + "driverClassName='" + driverClassName + '\'' + ", url='" + url + '\'' + ", username='" + username + '\'' + ", password='" + password + '\'' + '}'; } }第二个配置数据源的代码:JdbcConfiguration02.java package com.shenlong.demo.config; import com.alibaba.druid.pool.DruidDataSource; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; import javax.sql.DataSource; @Configuration @PropertySource("classpath:jdbc.properties") public class JdbcConfiguration02 { @Value("${uat.driverClassName}") private String driverClassName; @Value("${uat.url}") private String url; @Value("${uat.username}") private String username; @Value("${uat.password}") private String password; @Bean(name = "uatDataSource")//这里的bean可以随便写了 public DataSource getDataSource(){ DruidDataSource druidDataSource = new DruidDataSource(); druidDataSource.setDriverClassName(driverClassName); druidDataSource.setUrl(url); druidDataSource.setUsername(username); druidDataSource.setPassword(password); return druidDataSource; } @Override public String toString() { return "JdbcConfiguration02{" + "driverClassName='" + driverClassName + '\'' + ", url='" + url + '\'' + ", username='" + username + '\'' + ", password='" + password + '\'' + '}'; } }上面配置的两个数据源,需要注意的是,如果需要引入这两个数据源,需要对应的去获取IOC各自的bean name属性值,即: JdbcConfiguration01.java里面是@Bean(name = "dataSource"),引入的时候,名称同样要用到dataSource。即: @Autowired private DataSource dataSource;JdbcConfiguration02.java里面是@Bean(name = "uatDataSource"),引入的时候,名称同样要用到uatDataSource。 @Autowired private DataSource uatDataSource;可以使用测试类debug查看对应的数据源的值 测试类代码如下: package com.shenlong.demo; import com.shenlong.demo.config.JdbcConfiguration01; import org.junit.jupiter.api.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import javax.sql.DataSource; @RunWith(SpringRunner.class) @SpringBootTest class SpringbootDemoApplicationTests { @Autowired private JdbcConfiguration01 jdbcConfiguration; @Autowired private DataSource dataSource; @Autowired private DataSource uatDataSource; @Test public void test(){ System.out.println(dataSource); System.out.println(uatDataSource); System.out.println(jdbcConfiguration); } },下面是各自的数据源获取的值: |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |